diff --git a/tests/readme.txt b/tests/readme.txt
new file mode 100644
index 0000000..eaad2c4
--- /dev/null
+++ b/tests/readme.txt
@@ -0,0 +1,113 @@
+# Do not merge to default until this is blank #
+
+- Clean up naming conventions
+- Figure out config stuff
+- Figure out database testing
+
+
+
+# -------------- CodeIgniter Testing (4/20/2011) -------------- #
+
+
+# Introduction:
+
+This is the preliminary CodeIgniter testing documentation. It
+will cover both internal as well as external APIs and the reasoning
+behind their implemenation, where appropriate. As with all CodeIgniter
+documentation, this file should maintain a mostly human readable
+format to facilitate clean api design. [see http://arrenbrecht.ch/testing/]
+
+*FIRST PUBLIC DRAFT: EVERYTHING IS SUBJECT TO CHANGE*
+
+# Test Suites:
+
+CodeIgniter bootstraps a request very directly, with very flat class
+hierarchy. As a result, there is no main CodeIgniter class until the
+controller is instantiated.
+
+This has forced the core classes to be relatively decoupled, which is
+a good thing. However, it makes that portion of code relatively hard
+to test.
+
+Right now that means we'll probably have two core test suites, along
+with a base for application and package tests. That gives us:
+
+1. Bootstrap Test	- test common.php and sanity check codeigniter.php		[in planning]
+2. System Test		- test core components in relative isolation			[in development]
+3. Application Test	- bootstrapping for application/tests					[not started]
+4. Package Test		- bootstrapping for <package>/tests						[not started]
+
+
+## 1. Bootstrap Test
+
+Testing common.php should be pretty simple. Include the file, and test the
+functions. May require some tweaking so that we can grab the statics from all
+methods (see is_loaded()). Testing the actual CodeIgniter.php file will most
+likely be an output test for the default view, with some object checking after
+the file runs. Needs consideration.
+
+
+## 2. System Test
+
+Testing the core system relies on being able to isolate the core components
+as much as possible. A few of them access other core classes as globals. These
+should be mocked up and easy to manipulate.
+
+All functions in common.php should be a minimal implementation, or and mapped
+to a method in the test's parent class to gives us full control of their output.
+
+
+### CodeIgniterTestCase Documentation
+
+
+Test cases should extend CodeIgniterTestCase. This internally
+extends PHPUnit_Framework_TestCase, so you have access to all
+of your usual PHPUnit methods.
+
+We need to provide a simple way to modify the globals and the
+common function output. We also need to be able to mock up
+the super object as we please.
+
+Current API is *not stable*. Names and implementations will change.
+
+$this->ci_instance($obj)
+	set the object to use as the "super object", in a lot
+	of cases this will be a simple stdClass with the attributes
+	you need it to have.
+
+$this->ci_set_instance_var($name, $val)
+	add an attribute to the super object. This is useful if you
+	set up a simple instance in setUp and then need to add different
+	class mockups to your super object.
+
+$this->ci_core_class($name)
+	Get the _class name_ of a core class, so that you can instantiate
+	it. The variable is returned by reference and is tied to the correct
+	$GLOBALS key. For example:
+	$cfg =& $this->ci_core_class('cfg'); // returns 'CI_Config'
+	$cfg = new $cfg;					// instantiates config and overwrites the CFG global
+
+$this->ci_set_core_class($name, $obj);
+	An alternative way to set one of the core globals.
+
+
+## 3. Application Test:
+
+Not sure yet, needs to handle:
+- Libraries
+- Helpers
+- Models
+- MY_* files
+- Controllers (uh...?)
+- Views? (watir, selenium, cucumber?)
+
+- Database Testing
+
+
+## 4. Package Test:
+
+I don't have a clue how this will work.
+
+Needs to be able to handle packages
+that are used multiple times within the application (i.e. EE/Pyro modules)
+as well as packages that are used by multiple applications (library distributions)
\ No newline at end of file
